<?php
/**
 * 定义f:error控件，用来显示一个控件的错误信息
 * 
 * 可以使用的参数：
 * - for - <string> 对应的控件ID，要想屏蔽默认的错误消息绘制，可以在对应的表单控件上加入 error.render=false 属性
 * - first - <boolean> 是否只显示第一个错误，默认为true; 否则会显示所有错误
 * - layout.* - <array> 布局
 *
 * @package if
 * @subpackage module.ui
 * @since 1.1.0
 */
class UIFormError extends UIControl {
	function render() {
		$for = $this->attr("for");
		if (!$for) {
			return;
		}
		$this->setAttr("layout.errorfor", $for);
		$control = UIContainer::instance()->get($for);
		if (!if_is_instance_of($control, "UIFormElement")) {
			return $this->processLayout("");
		}
		$this->setAttr("layout.class", trim($this->attr("layout.class") . " " . o("@ui.styles.form_error")));
		if ($control->hasErrors()) {
			if ($this->can("first")) {
				return $this->processLayout($this->content() . $control->firstError());
			}
			else {
				return $this->processLayout($control->errors());
			}
		}
		else {
			$this->setAttr("layout.style", "display:none");
			return $this->processLayout("");	
		}
	}
}

?>